print('异常出现前')

l = []
try:
    # print(c)
    # l[10]
    # 1 + 'hello'
    print(10 / 0)
except ZeroDivisionError as e:
    # 如果except后不跟任何内容，则会捕获所有异常
    # 如果在except后跟着一个异常类型，那么此时它只会捕获该类型的异常
    print('出现 ZeroDivisionError 异常', e)
except NameError as e:
    print('出现 NameError 异常', e)
except IndexError as e:
    print('出现 IndexError 异常', e)
# Exception是所有异常的父类，所以如果except后跟的是Exception，他也会捕获到所有的异常
# 可以在异常后边跟着一个as xx，此时xx就是异常对象
except Exception as e:
    print('未知异常', e, type(e))
finally:
    print('无论是否出现异常，都需要执行！')
print('异常出现后')
